home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr05 / xnot12a.zip / REGEX.H < prev    next >
C/C++ Source or Header  |  1993-05-20  |  4KB  |  107 lines

  1. /* Definitions for data structures callers pass the regex library.
  2.    Copyright (C) 1985 Richard M. Stallman
  3.  
  4. This program is distributed in the hope that it will be useful,
  5. but without any warranty.  No author or distributor
  6. accepts responsibility to anyone for the consequences of using it
  7. or for whether it serves any particular purpose or works at all,
  8. unless he says so in writing.
  9.  
  10.    Permission is granted to anyone to distribute verbatim copies
  11.    of this program's source code as received, in any medium, provided that
  12.    the copyright notice, the nonwarraty notice above
  13.    and this permission notice are preserved,
  14.    and that the distributor grants the recipient all rights
  15.    for further redistribution as permitted by this notice,
  16.    and informs him of these rights.
  17.  
  18.    Permission is granted to distribute modified versions of this
  19.    program's source code, or of portions of it, under the above
  20.    conditions, plus the conditions that all changed files carry
  21.    prominent notices stating who last changed them and that the
  22.    derived material, including anything packaged together with it and
  23.    conceptually functioning as a modification of it rather than an
  24.    application of it, is in its entirety subject to a permission
  25.    notice identical to this one.
  26.  
  27.    Permission is granted to distribute this program (verbatim or
  28.    as modified) in compiled or executable form, provided verbatim
  29.    redistribution is permitted as stated above for source code, and
  30.     A.    it is accompanied by the corresponding machine-readable
  31.       source code, under the above conditions, or
  32.     B.    it is accompanied by a written offer, with no time limit,
  33.       to distribute the corresponding machine-readable source code,
  34.       under the above conditions, to any one, in return for reimbursement
  35.       of the cost of distribution.   Verbatim redistribution of the
  36.       written offer must be permitted.    Or,
  37.     C.    it is distributed by someone who received only the
  38.       compiled or executable form, and is accompanied by a copy of the
  39.       written offer of source code which he received along with it.
  40.  
  41.    Permission is granted to distribute this program (verbatim or as modified)
  42.    in executable form as part of a larger system provided that the source
  43.    code for this program, including any modifications used,
  44.    is also distributed or offered as stated in the preceding paragraph.
  45.  
  46. In other words, you are welcome to use, share and improve this program.
  47. You are forbidden to forbid anyone else to use, share and improve
  48. what you give them.   Help stamp out software-hoarding!     */
  49.  
  50.  
  51. #ifndef RE_NREGS
  52. #define RE_NREGS 10
  53. #endif
  54.  
  55. /* This data structure is used to represent a compiled pattern. */
  56.  
  57. struct re_pattern_buffer
  58.   {
  59.     char *buffer;    /* Space holding the compiled pattern commands. */
  60.     int allocated;    /* Size of space that  buffer  points to */
  61.     int used;        /* Length of portion of buffer actually occupied */
  62.     char *fastmap;    /* Pointer to fastmap, if any, or zero if none. */
  63.             /* re_search uses the fastmap, if there is one,
  64.                to skip quickly over totally implausible characters */
  65.     char *translate;    /* Translate table to apply to all characters before comparing.
  66.                Or zero for no translation.
  67.                The translation is applied to a pattern when it is compiled
  68.                and to data when it is matched. */
  69.     char fastmap_accurate;
  70.             /* Set to zero when a new pattern is stored,
  71.                set to one when the fastmap is updated from it. */
  72.     char can_be_null;    /* Set to one by compiling fastmap
  73.                if this pattern might match the null string.
  74.                It does not necessarily match the null string
  75.                in that case, but if this is zero, it cannot.  */
  76.   };
  77.  
  78. /* Structure to store "register" contents data in.
  79.  
  80.    Pass the address of such a structure as an argument to re_match, etc.,
  81.    if you want this information back.
  82.  
  83.    start[i] and end[i] record the string matched by \( ... \) grouping i,
  84.    for i from 1 to RE_NREGS - 1.
  85.    start[0] and end[0] record the entire string matched. */
  86.  
  87. struct re_registers
  88.   {
  89.     int start[RE_NREGS];
  90.     int end[RE_NREGS];
  91.   };
  92.  
  93.  
  94. extern char *re_compile_pattern ();
  95. /* Is this really advertised? */
  96. extern VOID re_compile_fastmap ();
  97. extern int re_search (), re_search_2 ();
  98. extern int re_match (), re_match_2 ();
  99.  
  100. /* 4.2 bsd compatibility (yuck) */
  101. extern char *re_comp ();
  102. extern int re_exec ();
  103.  
  104. #ifdef SYNTAX_TABLE
  105. extern char *re_syntax_table;
  106. #endif
  107.